React Lazy Loading: Komponent-kodesplitning for optimeret ydeevne | MLOG | MLOG ); } export default ImageGallery;

Og Image.js-komponenten:


import React from 'react';

const Image = ({ src, alt }) => {
  return {alt};
};

export default Image;

I dette eksempel er hvert billede indpakket i en <Suspense>-komponent, så der vil blive vist en indlæsningsbesked for hvert billede, mens det bliver indlæst. Dette forhindrer hele siden i at blive blokeret, mens billederne downloades.

Avancerede teknikker og overvejelser

1. Fejlgrænser (Error Boundaries)

Når du bruger lazy loading, er det vigtigt at håndtere potentielle fejl, der kan opstå under indlæsningsprocessen. Fejlgrænser (Error Boundaries) kan bruges til at fange disse fejl og vise en fallback-brugergrænseflade. Du kan oprette en fejlgrænsekomponent som denne:


import React, { Component } from 'react';

class ErrorBoundary extends Component {
  constructor(props) {
    super(props);
    this.state = { hasError: false };
  }

  static getDerivedStateFromError(error) {
    // Opdater state, så den næste gengivelse viser fallback-brugergrænsefladen.
    return { hasError: true };
  }

  componentDidCatch(error, errorInfo) {
    // Du kan også logge fejlen til en fejlrapporteringstjeneste
    console.error(error, errorInfo);
  }

  render() {
    if (this.state.hasError) {
      // Du kan gengive enhver brugerdefineret fallback-brugergrænseflade
      return 

Noget gik galt.

; } return this.props.children; } } export default ErrorBoundary;

Indpak derefter <Suspense>-komponenten med <ErrorBoundary>:



  Indlæser...}>
    
  


Hvis der opstår en fejl under indlæsning af MyComponent, vil <ErrorBoundary> fange den og vise fallback-brugergrænsefladen.

2. Server-Side Rendering (SSR) og Lazy Loading

Lazy loading kan også bruges i forbindelse med server-side rendering (SSR) for at forbedre den indledende indlæsningstid for din applikation. Det kræver dog noget yderligere konfiguration. Du skal sikre dig, at serveren kan håndtere dynamiske importer korrekt, og at de lazy-loadede komponenter bliver korrekt hydreret på klientsiden.

Værktøjer som Next.js og Gatsby.js giver indbygget understøttelse for lazy loading og kodesplitning i SSR-miljøer, hvilket gør processen meget lettere.

3. Forudindlæsning af Lazy-Loadede komponenter

I nogle tilfælde vil du måske forudindlæse en lazy-loaded komponent, før den rent faktisk er nødvendig. Dette kan være nyttigt for komponenter, der sandsynligvis snart vil blive gengivet, såsom komponenter, der er placeret under folden, men som sandsynligvis vil blive scrollet ind i synsfeltet. Du kan forudindlæse en komponent ved manuelt at kalde import()-funktionen:


import('./MyComponent'); // Forudindlæs MyComponent

Dette vil begynde at indlæse komponenten i baggrunden, så den vil være tilgængelig hurtigere, når den rent faktisk bliver gengivet.

4. Dynamiske importer med Webpack "Magic Comments"

Webpacks "magic comments" giver en måde at tilpasse navnene på de genererede kodebidder. Dette kan være nyttigt til fejlfinding og analyse af din applikations bundlestruktur. For eksempel:


const MyComponent = React.lazy(() => import(/* webpackChunkName: "my-component" */ './MyComponent'));

Dette vil oprette en kodebid ved navn "my-component.js" (eller lignende) i stedet for et generisk navn.

5. Undgå almindelige faldgruber

Eksempler og anvendelsesscenarier fra den virkelige verden

Lazy loading kan anvendes i en bred vifte af scenarier for at forbedre ydeevnen af React-applikationer. Her er nogle eksempler:

Eksempel: International E-handels-hjemmeside

Forestil dig en e-handels-hjemmeside, der sælger produkter globalt. Forskellige lande kan have forskellige valutaer, sprog og produktkataloger. I stedet for at indlæse alle data for hvert land på forhånd, kan du bruge lazy loading til kun at indlæse de data, der er specifikke for brugerens placering, når de besøger siden.


const CurrencyFormatter = React.lazy(() => import(`./CurrencyFormatter/${userCountry}`))
const ProductCatalog = React.lazy(() => import(`./ProductCatalog/${userCountry}`))

function ECommerceSite() {
  const userCountry = getUserCountry(); // Funktion til at bestemme brugerens land

  return (
    Indlæser indhold til din region...}>
      
      
    
  );
}

Konklusion

Lazy loading og komponent-kodesplitning er kraftfulde teknikker til at optimere ydeevnen af React-applikationer. Ved kun at indlæse komponenter, når der er brug for dem, kan du markant reducere den indledende indlæsningstid, forbedre brugeroplevelsen og styrke din SEO. Reacts indbyggede React.lazy() og <Suspense>-komponenter gør det nemt at implementere lazy loading i dine projekter. Omfavn disse teknikker for at bygge hurtigere, mere responsive og mere engagerende webapplikationer for et globalt publikum.

Husk altid at overveje brugeroplevelsen, når du implementerer lazy loading. Sørg for informative fallback-brugergrænseflader, håndter potentielle fejl elegant, og analyser omhyggeligt din applikations ydeevne for at sikre, at du opnår de ønskede resultater. Vær ikke bange for at eksperimentere med forskellige tilgange og finde den bedste løsning til dine specifikke behov.